import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { visualizer } from 'rollup-plugin-visualizer'
import { Plugin as importToCdn } from 'vite-plugin-cdn-import'
import { VitePWA } from 'vite-plugin-pwa'
// https://vitejs.dev/config/
export default defineConfig({
  base: '/',
  plugins: [
    vue(),
    vueJsx(),
    VitePWA({
      registerType: 'autoUpdate', // 注册更新模式方式  默认是autoUpdate，将会自动更新，其他还有prompt和skipWaiting
      injectRegister: 'auto', // 控制如何在应用程序中注册ServiceWorker 默认值是 'auto' ，其他如：'inline' 则是注入一个简单的注册脚本，内联在应用程序入口点中
      manifest: {
        // manifest.json 文件配置
        name: 'qborfy study website',
        short_name: 'qborfyStudy',
        description: 'qborfy study website',
        theme_color: '#ffffff',
        icons: [
          {
            src: 'avicon.ico',
            sizes: '192x192',
            type: 'image/ico',
          },
          {
            src: 'favicon.ico',
            sizes: '512x512',
            type: 'image/ico',
          },
        ],
      },
      devOptions: {
        enabled: false,
      },
    }),
    visualizer()
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
  build: {
    commonjsOptions: {
      include: /node_modules/, //这里记得把lib目录加进来，否则生产打包会报错！！
    },
    rollupOptions: {
      external: ['vue', 'element-plus', '@element-plus/icons-vue'],
    },
  },
  server: {
    host: '0.0.0.0',
    // port: 8080, // 端口号
    open: false, // 是否自动在浏览器打开
    https: false, // 是否开启 https
    proxy: {
      '/api': {
        target: 'http://localhost:8080', // 所要代理的目标地址
        rewrite: path => path.replace(/^\/api/, ''),
        changeOrigin: true, // true/false, 默认值:false -  是否允许跨域
      },
    },
  },
})
